package com.dingwen.treasure.base.valid;

import cn.hutool.core.util.ArrayUtil;
import com.dingwen.treasure.base.annotation.AllowableValues;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

/**
 * 　AllowableValuesValidator
 * 　@author dingwen
 * 　@date 2022/6/27
 */
public class AllowableValuesValidator implements ConstraintValidator<AllowableValues, Object> {

    /**
     * str 可选值
     */
    private String[] strValues;

    /**
     * int 可选值
     */
    private int[] intValues;

    @Override
    public void initialize(AllowableValues allowablevalues) {
        this.strValues = allowablevalues.strValues();
        this.intValues = allowablevalues.intValues();
    }

    @Override
    public boolean isValid(Object o, ConstraintValidatorContext constraintValidatorContext) {
        if (o instanceof String) {
            return ArrayUtil.contains(strValues, String.valueOf(o));
        } else if (o instanceof Integer) {
            return ArrayUtil.contains(intValues, Integer.parseInt(String.valueOf(o)));
        }
        return false;
    }
}
